package cn.tangshh.universal.security.service;

import cn.tangshh.universal.security.entity.BasicGrantedAuthority;
import cn.tangshh.universal.security.entity.BasisAuthUser;
import cn.tangshh.universal.security.entity.BasisUserRole;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.Set;

/**
 * 认证服务接口
 *
 * @author Tang
 * @version v1.0
 * @since 2024/10/12
 */
public interface BasisAuthService extends UserDetailsService {
    /**
     * 登录
     *
     * @param username 用户名
     * @param password 密码
     * @return {@link U }
     */
    <U extends BasisAuthUser> U login(String username, String password);

    /**
     * 通过用户标识查询用户角色
     *
     * @param userCode 用户代码
     * @return {@link Set }<{@link R }>
     */
    <R extends BasisUserRole> Set<R> findRoleByUserCode(String userCode);

    /**
     * 通过用户标识查询用户权限
     *
     * @param userCode 用户代码
     * @return {@link Set }<{@link R }>
     */
    <R extends BasicGrantedAuthority> Set<R> findAuthorityByUserCode(String userCode);
}